package estudoregistry.model;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;

public class Hive {
    private final FileInputStream fis;

    private HiveHeader header;
    private List<HiveBin> hiveBins;

    public Hive(FileInputStream fis) {
        this.fis = fis;
//        readHeader();
        //lê header
        //loop para ler hivebins... verificar como deve ser o controle
    }

    private void readHeader() throws IOException {
        this.header = new HiveHeader(this.fis);

        header.readElement("Magic Number", 4, HiveElement.STRING);
//        this.magicNumber = new HiveElement(fis,4,HiveElement.STRING);
//        this.seqNumber1 = new HiveElement(fis,4,HiveElement.UNSIGNED_INTEGER);
//        this.seqNumber2 = new HiveElement(fis,4,HiveElement.UNSIGNED_INTEGER);
//        this.lastModificationStamp64bit = new HiveElement(fis,8,HiveElement.TIMESTAMP64);
//        this.majorVersion = new HiveElement(fis,4,HiveElement.UNSIGNED_INTEGER);
//        this.minorVersion = new HiveElement(fis,4,HiveElement.UNSIGNED_INTEGER);
//        this.fileType = new HiveElement(fis,4,HiveElement.UNKNOWN);
//        this.unknown01 = new HiveElement(fis,4,HiveElement.UNKNOWN);
//        this.pointerFirstRecord = new HiveElement(fis,4,HiveElement.OFFSET);
//        this.hBinDataSize = new HiveElement(fis,4,HiveElement.OFFSET);
//        this.unknown02 = new HiveElement(fis,4,HiveElement.UNKNOWN);
//        this.fileName = new HiveElement(fis,64,HiveElement.STRING);
//        this.unknown03 = new HiveElement(fis,16,HiveElement.GUID);
//        this.unknown04 = new HiveElement(fis,16,HiveElement.GUID);
//        this.unknown05 = new HiveElement(fis,4,HiveElement.UNSIGNED_INTEGER);
//        this.unknown06 = new HiveElement(fis,16,HiveElement.GUID);
//        this.unknown07 = new HiveElement(fis,4,HiveElement.UNSIGNED_INTEGER);
//        this.unknown08 = new HiveElement(fis,340,HiveElement.UNKNOWN);
//        this.checksum = new HiveElement(fis,4,HiveElement.UNSIGNED_INTEGER);
//        this.unknown09 = new HiveElement(fis,3528,HiveElement.UNKNOWN);
//        this.unknown10 = new HiveElement(fis,16,HiveElement.GUID);
//        this.unknown11 = new HiveElement(fis,16,HiveElement.GUID);
//        this.unknown12 = new HiveElement(fis,16,HiveElement.GUID);
//        this.unknown13 = new HiveElement(fis,4,HiveElement.UNKNOWN);
//        this.unknown14 = new HiveElement(fis,4,HiveElement.UNKNOWN);        
    }
    /**
     * @return the header
     */
    public HiveHeader getHeader() {
        return header;
    }

    /**
     * @param header the header to set
     */
    public void setHeader(HiveHeader header) {
        this.header = header;
    }

    /**
     * @return the hiveBins
     */
    public List<HiveBin> getHiveBins() {
        return hiveBins;
    }

    /**
     * @param hiveBins the hiveBins to set
     */
    public void setHiveBins(List<HiveBin> hiveBins) {
        this.hiveBins = hiveBins;
    }

}
